Internet de las cosas (IoT)

Fundamentos IoT

Internet of things, Internet de las cosas o Internet de los objetos es un concepto surgido en 1999.

Podríamos decir que un sistema enmarcado en internet de las cosas es aquel que utiliza objetos físicos, con una parte digital y objetos que se comunican con otros sistemas u objetos de forma autónoma. Para realizar esta comunicación utilizan internet u otros protocolos (RFID, Bluetooth, etc).

Los objetos y su funcionalidad pueden ser de lo más variado (sensores, electrodomésticos, vehículos...), pudiendo ser técnicamente muy simples o muy complejos.

Los objetos interactúan mediante servicios, siendo estos las cosas que el objeto puede hacer, acciones o habilidades asociadas al objeto.

Estos servicios, al igual que los objetos, son de una complejidad variable.

Otra de las ideas clave de IoT es que la comunicación entre objetos es autónoma.

Cada objeto posee dos partes:

 

Ejemplo_IoT_1
Ejemplo_IoT_2
Ejemplo_IoT_3
Objeto conectado de tipo cerradura, con dos servicios
Objeto conectado de tipo cerradura, con servicio de reconocimiento biométrico
Sistema IoT con varios objetos

 

Los objetos tienen diferentes niveles de inteligencia. Un objeto muy inteligente es capaz de realizar muchas tareas: consume servicios de otros objetos, toma decisiones, es capaz de auto administrarse, etc.

La inteligencia de un objeto se puede dividir en tres categorías:

  1. Manejo de información: simplemente son sensores que devuelven su estado cuando se les consulta.

     

    IoT_manejo_información

    Objetos inteligentes con capacidad de manejo de información

     

  2. Notificación: se trata de un objeto capaz de notificar situaciones o cambios a otros dispositivos o personas. El objeto no controla su actividad, pero si es capaz de tomar la iniciativa en una comunicación e informar ante determinadas situaciones.

     

    IoT_notificacion

    Objetos inteligentes con capacidad de notificación

     

  3. Toma de decisiones: supone un mayor nivel de inteligencia. El objeto es capaz de auto administrarse, ejecutar lógica de negocio y tomar de decisiones. Estas decisiones le permiten controlar su funcionalidad de forma total o parcial.

    La inteligencia del sistema se puede localizar en un solo objeto o en el conjunto de objetos que forman la red.

     

    IoT_toma_decisiones

Objetos inteligentes con capacidad de toma de decisiones

 

Dispositivos y comunicaciones IoT

Existen infinidad de dispositivos IoT que se pueden adquirir y disfrutar en distintos entornos. Muchos fabricantes se han centrado en crear familias completas de soluciones centradas en el hogar, con sensores y actuadores de todo tipo:

También podemos diseñar nuestras propias soluciones con alternativas como Arduino, Raspberry Pi, Intel Edison, Beaglebone, etc.

El gran interés que han despertado estos dispositivos, y la filosofía DIY (Do It Yourself, hazlo tú mismo), ha propiciado una industria de fabricación de todo tipo de sensores y complementos.

 

Arduino_vs_Beaglebone_vs_Raspberry-Pi

Arduino vs Beaglebone vs Raspberry Pi

 

Por otra parte, suele ser necesario disponer de un Backend para la recogida de datos de los sensores y su procesamiento, o comunicación con terceros dispositivos.

Esto se ha simplificado con multitud de plataformas completas disponibles en el mercado, con capacidades que van más allá de la simple recogida de datos.

Estas plataformas pueden ser:

Habitualmente estas plataformas ofrecen una API para conectarse a ellas y utilizar sus servicios, permitiendo que la creación de dispositivos sea relativamente sencilla.

 

Esquema_dispositivo_detector_fugas_gas

Esquema de dispositivo remoto detector de fugas de gas

 

Comunicaciones

Por la propia naturaleza de los dispositivos IoT, que se pueden emplazar en exteriores e interiores, se necesitan comunicaciones WWAN, normalmente propiciadas con redes de telefonía móvil 2.5G, 3G o 4G.

 

Tipos_redes_inalámbricas_IoT

Tipos de redes inalámbricas para IoT

 

Muchos de estos dispositivos están operados por baterías, siendo necesario desarrollar tecnologías LPWAN (Low Power WAN), con un consumo muy reducido y mucha mayor cobertura que las tecnologías móviles tradicionales.

Existen dos grandes grupos de tecnologías LPWAN hoy día:

 

Dadas las diferencias de velocidad entre NB-IoT y LTE-M (más elevadas para este último), normalmente se consideran distintos casos de uso para las mismas.

LTE-M es utilizada cuando precisamos de velocidades altas mientras que NB-IoT se utiliza cuando se precisa gran cantidad de dispositivos conectados.

 

Tipos_aplicaciones_redes_LPWAN

Tipos de aplicaciones para las distintas redes LPWAN

 

Más allá de la computación en la nube

El cloud computing nos ofrece múltiples ventajas en términos de flexibilidad, escalabilidad, seguridad, acceso simultáneo, etc.

Sin embargo, este modelo suele tener el hándicap de tiempos de latencia elevados. En términos generales, la tecnología IoT está generando enormes volúmenes de datos, y cuando llegan a la nube para ser sometidos a análisis, suele ser tarde para actuar.

Es por ello que están apareciendo arquitecturas complementarias a la computación en la nube, orientadas a reducir los elevados tiempos de latencia:

 

Arquitectura Edge Computing o computación al extremo (de la red)

La arquitectura Edge Computing se basa en traer el procesamiento cerca de la fuente de datos, por lo que no es necesario enviarlos a una nube para procesarlos. Esto permite mejorar enormemente la velocidad y el rendimiento.

Esta arquitectura es muy adecuada para dispositivos IoT con conectividad pobre.

Al reducir las capas, se reducen congestiones.

Ejemplos:

 

Fog Computing o computación en la niebla

El Fog Computing es una estructur descentralizada. En el Fog Computing, el almacenamiento y el procesamiento de datos se distribuye entre la fuente de datos y la nube, beneficiándose de una menor latencia y carga de datos.

Ejemplos:

 

Cloud-Fog-Edge

Cloud Computing VS Fog Computing VS Edge Computing

 

La principal diferencia técnica entre ambas está en el lugar en el que finalmente se hace el procesamiento. La computación en la niebla desplaza la inteligencia de validación de datos a la red local, mientras que la computación en el extremo lo hace en los propios dispositivos.

 

Edge_computing_VS_Fog_computing

Diferencias entre Edge Computing y Fog Computing

 

En el ámbito de servicios móviles, actualmente se está trabajando en arquitecturas de edge computing intentando sacar el máximo partido de la tecnología 5G, colocando nodos de procesamiento y almacenamiento conectados en la red de acceso a radio.

 

Ciudades inteligentes (smart cities)

El concepto de smart city ejerce una gran atracción, fundamentalmente porque en él convergen otras grandes tecnologías del momento: IoT, e-Mobility, Data Science, etc.

Smart city se ocupa de las distintas técnicas que pueden usar las ciudades para realizar su transformación digital, con el fin de llegar a ser más acogedoras, más eficientes, más respetuosas con el medio ambiente, más centradas en el ciudadano, y como consecuencia de todo ello, más competitivas.

Una de las partes mas importantes en una smart city es la colaboración ciudadana, permitiendo a los ciudadanos ofrecer un feedback continuo de la ciudad.

 

Ejemplo_usos_smart_city

Ejemplo de posibles usos de una smart city

 

Un asunto relevante, que se está aún debatiendo es hasta qué punto se deben extraer y procesar datos. Las cuestiones de la privacidad y soberanía de los datos se deben abordar cuidadosamente.

En efecto, puede haber pérdida de control para los ciudadanos de una smart city si la tecnología hace posible que distintas cámaras y dispositivos puedan seguir sus pasos vayan donde vayan, y si los algoritmos influencian su vida diaria.

Una smart city puede, como casi todas las tecnologías, gestionarse para bien o para mal, pudiéndose usar potencialmente para propósitos de vigilancia masiva de la ciudadanía.

 

Gemelos digitales (digital twin)

Un gemelo digital es una réplica digital de un producto, proceso o sistema físico, que gracias a información que se obtiene a partir de sensores proporciona Información precisa sobre sus elementos.

Un gemelo digital es una réplica actualizada y exacta de todos los elementos de un objeto físico permitiendo realizar simulaciones de diferentes procesos.

Esta simbiosis del mundo físico con el virtual hace posible tanto la aplicación de analítica de datos como de monitorización, con el objetivo de:

Los gemelos digitales aglutinan diversas tecnologías, como inteligencia artificial, aprendizaje automático, analítica predictiva y telemetría de sensores.

 

Proyectos IoT

Un proyecto es un esfuerzo temporal emprendido para crear un único producto o servicio.

La gestión de proyectos es la aplicación de conocimientos, habilidades, herramientas y técnicas para proyectar actividades destinadas a satisfacer las necesidades y expectativas de los interesados de un proyecto.

En un proyecto de loT, el software es el producto más habitual que un proyecto de estas características genera. Por supuesto, el software viene acompañado de hardware con sensores o actuadores que ejecutan las órdenes emitidas por el software.

El ciclo de vida del software

El ciclo de vida de un producto software es la evolución del producto desde su concepción hasta su retirada.

 

Ciclos de vida

Modelo en cascada

El modelo en casada representa el proceso como una secuencia de actividades bien definidas, donde una actividad no comienza hasta que finalice su predecesora. No tiene flexibilidad, con lo que los requisitos han de estar cláramente definidos al comienzo.

 

Modelo_cascada

Esquema modelo en cascada

 

Modelo en espiral

El modelo en espiral consiste en iteraciones que permiten avanzar gradualmente hacia el producto final mitigando los riesgos existentes.

 

Modelo_espiral

Esquema modelo en espiral

 

Modelo iterativo e incremental

En el modelo iterativo e incremental se realizan versiones incrementales del producto para que el software funcional llegue cuanto antes al cliente y este pueda dar retroalimentación.

 

Modelo_Iterativo_incremental

Esquema modelo iterativo e incremental

 

Metodologías de diseño de software

Una metodología es un conjunto de procedimientos que permiten producir y mantener un producto software. La metodología define cuáles son las fases del ciclo de vida del software de las que se va a ocupar, definiendo para cada fase las actividades, tareas, los objetivos correspondientes y los participantes involucrados en cada tarea.

Existen muchas y diversas metodologías:

 

Gestión ágil de proyectos

Las metodologías ágiles permiten adaptar la forma de trabajo a las condiciones del proyecto, intentando reducir costes e incrementar la productividad.

Entre las metodologías ágiles más aplicadas hoy en día tenemos:

Scrum

En Scrum, el trabajo se divide en ciclos cortos llamados sprints, que permiten al equipo concentrarse en entregar partes específicas del proyecto de manera iterativa y incremental, mejorando continuamente el producto y el proceso. Scrum también define roles claros como el Scrum Master y el Product Owner, y eventos como las reuniones diarias y las retrospectivas para asegurar una comunicación efectiva y una mejora constante.

 

Kanban

Kanban se basa en el uso de un tablero visual dividido en columnas que representan diferentes etapas del flujo de trabajo, como "To Do", "In Progress" y "Done". Las tareas se representan con tarjetas que se mueven a través de las columnas, lo que permite a los equipos visualizar el progreso y gestionar la carga de trabajo de manera eficiente. Esta metodología promueve la eficiencia y la mejora continua al limitar la cantidad de trabajo en proceso y al enfocarse en la entrega justa a tiempo, adaptándose a la demanda del cliente. Kanban ayuda a identificar cuellos de botella y a optimizar el flujo de trabajo, facilitando así una mejor planificación y coordinación del equipo.

 

Scrumban

Scrumban integra las prácticas de Scrum y Kanban, aprovechando la estructura de sprints, reuniones rápidas y retrospectivas de Scrum, junto con el flujo de trabajo visual y las limitaciones de trabajo en curso de Kanban. Esta fusión crea un marco híbrido que permite a los equipos ser más flexibles y responder mejor a los cambios, manteniendo al mismo tiempo una organización clara del trabajo y una mejora continua. Scrumban es especialmente útil para equipos que buscan una transición suave entre estas dos metodologías ágiles o para aquellos proyectos que requieren un enfoque adaptativo y evolutivo.

 

eXtreme Programming (XP)

eXtreme Programming (XP) es una metodología ágil de desarrollo de software que enfatiza la eficiencia y la adaptabilidad a través de ciclos de desarrollo cortos y retroalimentación continua. Se basa en cinco valores fundamentales: comunicación, simplicidad, retroalimentación, coraje y respeto, y se rige por cinco principios y doce prácticas que incluyen programación en parejas, desarrollo dirigido por pruebas y diseño simple. XP busca mejorar la calidad del software y la capacidad de respuesta a los cambios en los requisitos del cliente, promoviendo un enfoque disciplinado y colaborativo en el equipo de desarrollo.

 

Uno de los mayores retos para el director de proyectos en cualquier ámbito es estimar las tres principales líneas base del proyecto:

Mientras que las metodologías tradicionales dejan el alcance fijo y varían el tiempo y el coste, en cambio, las metodologías ágiles fijan el tiempo y el coste mientras que el alcance es variable.

 

Tradicional_VS_Agile

Metodologías tradicionales VS metodologías ágiles

 

by Jose Manuel Pinillos